Глава IV
4.5. Производные NURBS поверхности

Производные Sw(u,v)Sw(u,v) вычисляются по формулам (3.17) - (3.24). Выведем теперь формулы для производных S(u,v)S(u,v) с точки зрения тех Sw(u,v)Sw(u,v). Пусть

S(u,v)=w(u,v)S(u,v)w(u,v)=A(u,v)w(u,v)S(u,v)=w(u,v)S(u,v)w(u,v)=A(u,v)w(u,v)

где A(u,v)A(u,v) является числителем S(u,v)S(u,v) ( уравнение [4.11]). Затем

Sα(u,v)=Aα(u,v)-wα(u,v)S(u,v)w(u,v)Sα(u,v)=Aα(u,v)wα(u,v)S(u,v)w(u,v)(4.19)

где αα обозначает либо uu или vv.

В целом

A(k,l)=[(wS)k]l=(ki=0(ki)w(i,0)S(k-i,0))l=ki=0(ki)lj=0(lj)w(i,j)S(k-i,l-j)A(k,l)=[(wS)k]l=(ki=0(ki)w(i,0)S(ki,0))l=ki=0(ki)lj=0(lj)w(i,j)S(ki,lj) =w(0,0)S(k,l)+ki=1(ki)w(i,0)S(k-i,l)+lj=1(lj)w(0,j)S(k,l-j)=w(0,0)S(k,l)+ki=1(ki)w(i,0)S(ki,l)+lj=1(lj)w(0,j)S(k,lj) +ki=1(ki)lj=1(lj)w(i,j)S(k-i,l-j)+ki=1(ki)lj=1(lj)w(i,j)S(ki,lj)

и отсюда следует, что

S(k,l)=1w(A(k,l)-ki=1(ki)w(i,0)S(k-i,l)-lj=1(lj)w(0,j)S(k,l-j)S(k,l)=1w(A(k,l)ki=1(ki)w(i,0)S(ki,l)lj=1(lj)w(0,j)S(k,lj) -ki=1(ki)lj=1(lj)w(i,j)S(k-i,l-j))ki=1(ki)lj=1(lj)w(i,j)S(ki,lj))(4.20)

Из уравнения (4.20), получаем

Suv=Auv-wuvS-wuSv-wvSuwSuv=AuvwuvSwuSvwvSuw(4.21)

Suu=Auu-2wuSu-wuuSwSuu=Auu2wuSuwuuSw(4.22)

Svv=Avv-2wvSv-wvvSwSvv=Avv2wvSvwvvSw(4.23)

Из уравнений (3.24), (4.19) и (4.20)

Su(0,0)=pup+1w1,0w0,0(P1,0-P0,0)Su(0,0)=pup+1w1,0w0,0(P1,0P0,0)(4.24)

Sv(0,0)=qvq+1w0,1w0,0(P0,1-P0,0)Sv(0,0)=qvq+1w0,1w0,0(P0,1P0,0)(4.25)

Suv(0,0)=pqw0,0up+1vq+1(w1,1P1,1-w1,0w0,1w0,0(P1,0-P0,1)Suv(0,0)=pqw0,0up+1vq+1(w1,1P1,1w1,0w0,1w0,0(P1,0P0,1) +(2w1,0w0,1w0,0-w1,1)P0,0)+(2w1,0w0,1w0,0w1,1)P0,0)(4.26)

Рисунок 4.13 показывает, частные производные первого и второго порядка NURBS поверхности. Первые производные уменьшены на 1⁄2, а вторые производные уменьшены на 1⁄3.

Рисунок 4.13. Частные производные первого и второго порядка бикубической поверхности NURBS, вычисленные при u=3⁄4 и v=1⁄4.

Теперь предположим, что (u,v) фиксированы, и что все производные A(k,l), w(k,l) для k,l0 и 0k+ld, были вычислены и загружаются в массивы Aders и wders, соответственно. Алгоритм A4.4 вычисляет точку S(u,v) и производные S(k,l)(u,v), 0k+ld. Bin[][] содержит предварительно вычисленные биномиальные коэффициенты.

Алгоритм А4.4

RatSurfaceDerivs(Aders,wders,d,SKL)
{ /* Вычисляем  производные  S(u,v) */
  /* Вход: Aders,wders,d */
  /* Выход: SKL */
for (k=0;  k<=d; k++)
   for (l=0;  l<=d-k;  l++)
      {
      v = Aders[k][l];
      for (j=1;  j<=l;  j++)
         v = v - Bin[l][j]*wders[0][j]*SKL[k][l-j];
      for (i=1;  i<=k;  i++)
         {
         v = v - Bin[k][i]*wders[i][0]*SKL[k-i][l];
         v2 = 0.0;
         for (j=1;  j<=l;  j++)
            v2 = v2 + Bin[l][j]*wders[i][j]*SKL[k-i][l-j];
         v = v - Bin[k][i]*v2;
         }
      SKL[k][l]  = v/wders[0][0];
      }
}
    

Упражнения

  1. Пусть U={0,0,0,1⁄3,2⁄3,1,1,1} и {w4,...,w4}={1,4,1,1,1}. Используя рекуррентную формулу Cox-deBoor (уравнение [2.5]) и уравнение (4.2), вы­числите пять квадратичных рациональных функций, Ri,2(u), 0i4. Гра­фики этих функций показаны на рис. 4.5a. Предположим, что {P0,...,P4}={(0,0),(1,1),(3,2),(4,1),(5,-1)} являются контрольными точками в пло­ско­сти xy, Вычислить рациональные координатные функции x(u) и y(u), представляющие C(u) в интервале u[1⁄3,2⁄3).
  2. В примере Пр4.2 приведена квадратичная рациональная круговая дуга Безье; вычислети C(1).
  3. Пусть Cw(u)=1i=0Ni,1(u)Pwi отрезок прямой в плоскости xy, где P0=(0,1), P1=(2,0), w0=1, w1=3 и U={0,0,1,1}. Выведите ра­ци­он­аль­ные функции, представляющие координаты x и у этого отрезка, то есть x(u) и y(u), где C(u)=(x(u),y(u)). Вычислить C(0), используя формулу (4.9) и C(0), используя уравнения (4.8) и (3.9). Затем установите w1=1 и пересчитайте x(u), y(u), C(0) и C(0).
  4. Пусть Sw(u,v)=1i=01j=0Ni,1(u)Nj,1(v)Pwi,j, где {P0,0,P1,0, P0,1,P1,1}={(0,0,1),(0,1,3),(2,1,1),(2,0,3)}, {w0,0,w1,0,w0,1,w1,1}={2,1,1,1} и U=V={0,0,1,1}. Выведите четыре рациональных базисных функции Ri,j(u,v), и рациональные координатные функции x(u,v), y(u,v) и z(u,v) из поверхность S(u,v).
  5. Из Sw(n,v) в упражнении 4.4 выведите две рациональные изопараметри­ческие кривые Cwu0(u) и Cwv0(u) для u0=1⁄3 и v0=1⁄2. Затем оцените кривые Cu0(u) и Cv0(u) при v=1⁄2 и u=1⁄3 соответственно. Проверьте свои результа­ты, подставив (u,v)=(1⁄3,1⁄2) в функции рациональных координат, полученные в упражнении 4.4.
  6. Пусть Sw(u,v)=1i=01j=0Ni,1(u)Nj,1(v)Pwi,j - будет поверхно­стью, приведённой в упражнении 4.4. Поскольку N0,1(1⁄2)=N1,1(1⁄2)=1⁄2, это следует из того

    Sw(12,12)=14(Pw0,0+Pw0,1+Pw1,0+Pw1,1)=(1,12,94,54)

    Вычислите Su(1⁄2,1⁄2), Sv(1⁄2,1⁄2),Suv(1⁄2,1⁄2),Suu(1⁄2,1⁄2).